const expressJwt = require('express-jwt')
const { tokenSecret } = require('@root/config/config')
const cors = require('cors')
const express = require('express')

module.exports = {
  useMiddleware(app) {

    //解决跨越
    app.use(cors())
    //解析application/x-www-form-urlencoded格式的请求体数据
    app.use(express.urlencoded({ extended: false }))
    //封装res.send函数为res.ms
    app.use((req, res, next) => {
      res.ms = (msg = '', status = 1, data) => {
        // status = 0 为成功； status = 1 为失败； 默认将 status 的值设置为 1，方便处理失败的情况
        if (msg instanceof Error && msg.name == 'ER_PARSE_ERROR') {
          //sql语句错误
        }
        let token = undefined
        if (data && data.token) {
          token = data.token
        }
        res.send({
          status,
          msg: msg instanceof Error ? msg.message : msg,
          message: msg instanceof Error ? msg.message : msg,
          data,
          token
        })
      }
      next()
    })
    //解析token,以/api/开头的接口不用解析token;默认从请求头 Authorization:Bearer token... 中获取token;解析成功后会给req添加auth属性,值是token加密的数据
    app.use(
      expressJwt
        .expressjwt({ secret: tokenSecret, algorithms: ['HS256'] })
        .unless({
          path: [/^\/api\//]
        })
    )
  }
}
